package com.example.demo.mbatisplus;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * mybatisplus自动生成代码工具类
 * @author xzw
 *
 */
public class MpGenerator {
	
	final static String DB_URL = "jdbc:mysql://localhost:3306/patient_db1";//数据库连接地址
	final static String DB_USERNAME = "root";//数据库用户名
	final static String DB_PASSWORD = "123456";//数据库密码
	final static String AUTHOR = "许子文";//作者
	final static String OUT_PUT_DIR = "/src/test/java";//输出的文件夹路径(这里是以项目文件夹为根目录)
	final static String PARENT_PACKAGE = "com.example.demo.mbatisplus";//输出到的包目录
	final static String PARENT_MODULE = "code";//可以给代码一个父级package目录
	final static String MAPPER_PACKAGE_NAME = "dao";//存放mapper文件的package名称
	final static String TABLE_NAME = "tb_patient_record";//需要生成代码的表
	final static String REMOVE_TABLE_PREFIX = "tb_";//需要去除的表前缀
	
	public static void main(String[] args) {
		String baseDir = System.getProperty("user.dir");
		FastAutoGenerator.create(DB_URL, DB_USERNAME, DB_PASSWORD)
		    .globalConfig(builder -> {
		        builder.author(AUTHOR) // 设置作者
		        	.disableOpenDir()
		            .outputDir(baseDir+OUT_PUT_DIR); // 指定输出目录
		    })
		    .packageConfig(builder -> {
		        builder.parent(PARENT_PACKAGE) // 设置父包名
		        	.mapper(MAPPER_PACKAGE_NAME)// 设置存放mappe文件的package名称
		            .moduleName(PARENT_MODULE); // 设置父包模块名
		    })
		    .strategyConfig(builder -> {
		        builder.addInclude(TABLE_NAME) // 设置需要生成的表名
		            .addTablePrefix(REMOVE_TABLE_PREFIX) // 设置过滤表前缀
		        	.entityBuilder()
		        	.idType(IdType.ASSIGN_ID)
		        	.columnNaming(NamingStrategy.underline_to_camel)
		        	.enableTableFieldAnnotation()
			        .fileOverride();
		    })
//		    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
		    .execute();

		
	}
}
